from multiprocessing.managers import Value
from django.http import HttpResponse
import datetime
from django.core.context_processors import csrf
from django.shortcuts import render_to_response
import cgi
import psycopg2
#from win32com.client import Dispatch
import os

######################### Base de datos
DBhost = 'localhost'
DBname = 'Ciber'
DBuser = 'postgres'
DBpassword = 'Javier/ku1'
#conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"

######################### Usuarios
admin = 'admin'
basic = 'basic'
activo = 'activo'
inactivo = 'inactivo'


def consultafacturas(request):
        try:
                privilegios = request.session['privilegios']
                if privilegios == admin:
                    return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'admin':True})
                elif privilegios == basic:
                    return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'basic':True})
	except:
		return render_to_response('forma.html')
	

def consultaordenes(request):
	try:
		privilegios = request.session['privilegios']
		if privilegios == admin:
			return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'admin':True})
		elif privilegios == basic:
			return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'basic':True})
	except:
		return render_to_response('forma.html')

def ordenes(request):
	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'" 
	try:
		conn = psycopg2.connect(conn_string)
		cursor = conn.cursor()
		cursor.execute("SELECT id_orden FROM ordenes ORDER BY id_orden")
		identifica = 0
		for row in cursor.fetchall():
			identifica = row[0]+1
		privilegios = request.session['privilegios']
		if privilegios == admin:
			return render_to_response('ordenes.html',{'usuario':request.session['id'], 'admin':True, 'numorden':identifica})
		elif privilegios == basic:
			return render_to_response('ordenes.html',{'usuario':request.session['id'], 'basic':True, 'numorden':identifica})
	except:
		return render_to_response('forma.html')
		


def borrarorden(request):
	c = {}
	c.update(csrf(request))

	res = request.POST

	orden = res.get('orden')
	orden = cgi.escape(orden)

	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
		conn = psycopg2.connect(conn_string)
		cursor = conn.cursor()
		cursor.execute("DELETE FROM ordenes WHERE id_orden=%s" %orden)
		conn.commit()
		#os.remove('C:\\django\\ProyectoWeb\\ordenes\\%s.xlsx' %(orden))
	except:
		privilegios = request.session['privilegios']
		if privilegios == admin:
			return render_to_response('consultaordenes.html', {'errorCx':True, 'admin':True})
		elif privilegios == basic:
			return render_to_response('consultaordenes.html', {'errorCx':True, 'basic':True})
	privilegios = request.session['privilegios']
	if privilegios == admin:
		return render_to_response('consultaordenes.html', {'exito':True,'usuario':request.session['id'], 'admin':True})
	elif privilegios == basic:
		return render_to_response('consultaordenes.html', {'exito':True,'usuario':request.session['id'], 'basic':True}) 
		
def verorden(request):
	c = {}
	c.update(csrf(request))
	res = request.POST
	orden = res.get('orden')
	orden = cgi.escape(orden)
	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
		conn = psycopg2.connect(conn_string)
		cursor = conn.cursor()
		cursor.execute("SELECT id_orden, id_cliente, fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion FROM ordenes WHERE id_orden=%s;" %orden)
		records = cursor.fetchone()
		if records<> None:
			orden = records[0]
			id_cliente = records[1]
			fecha = records[2]
			descripcion_equipo = records[3]
			descripcion_falla = records[4]
			cambio_piezas = records[5]
			autorizacion = records[6]
			cotizacion = records[7]
			cursor.execute("SELECT nombre, paterno, materno, direccion, telefono, cp FROM cliente WHERE id=%s;" %id_cliente)
			records = cursor.fetchone()
			nombre =  records[0]
			paterno = records[1]
			materno = records[2]
			direccion = records[3]
			telefono = records[4]
			cp = records[5]
			privilegios = request.session['privilegios']
			if privilegios == admin:
				return render_to_response('consultaordenes.html',{'usuario':request.session['id'], 'ordenes':True,'orden':orden, 'fecha':fecha, 'descripcion_equipo':descripcion_equipo, 'descripcion_falla':descripcion_falla, 'cambio_piezas':cambio_piezas, 'autorizacion':autorizacion, 'cotizacion':cotizacion, 'nombre':nombre,'paterno':paterno,'materno':materno, 'direccion':direccion, 'telefono':telefono, 'cp':cp, 'admin':True})
			elif privilegios == basic:
				return render_to_response('consultaordenes.html',{'usuario':request.session['id'], 'ordenes':True,'orden':orden, 'fecha':fecha, 'descripcion_equipo':descripcion_equipo, 'descripcion_falla':descripcion_falla, 'cambio_piezas':cambio_piezas, 'autorizacion':autorizacion, 'cotizacion':cotizacion, 'nombre':nombre,'paterno':paterno,'materno':materno, 'direccion':direccion, 'telefono':telefono, 'cp':cp, 'basic':True})
		else:
			privilegios = request.session['privilegios']
			if privilegios == admin:
				return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'errorF':True, 'admin':True})
			elif privilegios == basic:
				return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'errorF':True, 'basic':True})
	except:
		privilegios = request.session['privilegios']
		if privilegios == admin:
			return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'admin':True})
		elif privilegios == basic:
			return render_to_response('consultaordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'basic':True})
		
def hola(request):
	return HttpResponse("Hola mundo")

def tiempo(request):
	n = datetime.datetime.now()
	html = "<html><body><h1>%s</h1></body></html>" %n
	return HttpResponse(html)
	
def login(request):
	return render_to_response('forma.html')
	
def logout(request):
    try:
        del request.session['id']
    except KeyError:
        pass
    return render_to_response('forma.html')

def inicio(request):
	try:
                privilegios = request.session['privilegios']
                if privilegios == admin:
                    return render_to_response('inicio.html',{'usuario':request.session['id'], 'admin':True})
                elif privilegios == basic:
                    return render_to_response('inicio.html',{'usuario':request.session['id'], 'basic':True})
	except:
		return render_to_response('forma.html')
		
def facturas(request):
	try:
                privilegios = request.session['privilegios']
                if privilegios == admin:
                    return render_to_response('facturas.html',{'usuario':request.session['id'], 'admin':True})
                elif privilegios == basic:
                    return render_to_response('facturas.html',{'usuario':request.session['id'], 'basic':True})
	except:
		return render_to_response('forma.html')

def modificarorden(request):
	c = {}
	c.update(csrf(request))
	res = request.POST
	orden = res.get('orden')
	fecha = res.get('fecha')
	nombre = res.get('nombre')
	paterno = res.get('paterno')
	materno = res.get('materno')
	direccion = res.get('direccion')
	cp = res.get('cp')
	telefono = res.get('telefono')
	descripcion_equipo = res.get('descripcion')
	descripcion_falla = res.get('descripcion_falla')
	cambio_piezas = res.get('cambio_piezas')
	autorizacion = res.get('autorizacion')
	cotizacion = res.get('cotizacion')
        completo = nombre+" "+paterno+" "+materno
	#file_name = 'C:\\django\\ProyectoWeb\\ordenes\\ejemplo.xlsx'
	#excel = Dispatch('Excel.Application')
	#workbook = excel.Workbooks.Open(file_name)
	#workBook = excel.ActiveWorkbook
	#activeSheet = excel.ActiveSheet
	#sheets = workBook.Sheets
	#sheet = sheets('Hoja1')
	#sheet.Activate()
	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
            conn = psycopg2.connect(conn_string)
            cursor = conn.cursor()
            cursor.execute("SELECT id, rfc FROM cliente WHERE nombre='" + nombre + "' AND paterno = '"+paterno+"' AND materno='"+materno+"';")
            records = cursor.fetchone()
            if records <> None:
                idcliente = records[0]
                rfc = records[1]
                query = "UPDATE cliente SET rfc='%s', direccion='%s', telefono='%s',cp='%s' WHERE id =%s;" %(rfc, direccion, telefono, cp, idcliente)
                cursor.execute(query)
                query = "UPDATE ordenes SET fecha='%s', descripcion_equipo='%s', descripcion_falla='%s', cambio_piezas='%s', autorizacion='%s', cotizacion='%s', id_cliente =%s WHERE id_orden = %s;" %(fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, idcliente,orden)
                cursor.execute(query)
            else:
                cursor.execute("SELECT COUNT(id) FROM cliente")
                records = cursor.fetchone()
                identifica = records[0]
                query = "INSERT INTO cliente (id, nombre, direccion, telefono, rfc, cp, paterno, materno) VALUES (%s, '%s', '%s', '%s', '','%s','%s','%s');" %(identifica, nombre, direccion, telefono, cp,paterno,materno)
                cursor.execute(query)
                query = "UPDATE ordenes SET fecha='%s', descripcion_equipo='%s', descripcion_falla='%s', cambio_piezas='%s', autorizacion='%s', cotizacion='%s', id_cliente =%s WHERE id_orden = %s;" %(fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, identifica,orden)
                cursor.execute(query)
            conn.commit()
            #sheet.Cells(4, 3).Value = completo
            #sheet.Cells(5, 3).Value = direccion
            #sheet.Cells(6, 3).Value = telefono
            #sheet.Cells(4, 8).Value = orden
            #sheet.Cells(6, 7).Value = fecha
            #sheet.Cells(8, 1).Value = descripcion_equipo
            #sheet.Cells(14, 1).Value = descripcion_falla
            #sheet.Cells(19, 1).Value = cambio_piezas
            #sheet.Cells(18, 5).Value = autorizacion
            #sheet.Cells(19, 7).Value = cotizacion
            #caminosalvacion = 'C:\\django\\ProyectoWeb\\ordenes\\%s.xlsx' %(orden)
            #workBook.SaveAs(caminosalvacion)
            #workBook.Saved = 0
            #workBook.Close(SaveChanges=0)
            #excel.Quit()
            #del excel
	except:
		privilegios = request.session['privilegios']
		if privilegios == admin:
			return render_to_response('ordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'admin':True})
		elif privilegios == basic:
			return render_to_response('ordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'basic':True})

	privilegios = request.session['privilegios']
	if privilegios == admin:
		return render_to_response('consultaordenes.html', {'exitos':True,'usuario':request.session['id'], 'admin':True})
	elif privilegios == basic:
		return render_to_response('consultaordenes.html', {'exitos':True,'usuario':request.session['id'], 'basic':True})

def ordenar(request):
    c = {}
    c.update(csrf(request))
    res = request.POST
    orden = res.get('folio')
    fecha = res.get('fecha')
    nombre = res.get('nombre')
    paterno = res.get('paterno')
    materno = res.get('materno')
    direccion = res.get('direccion')
    cp = res.get('cp')
    telefono = res.get('telefono')
    descripcion_equipo = res.get('descripcion')
    descripcion_falla = res.get('descripcion_falla')
    cambio_piezas = res.get('cambio_piezas')
    autorizacion = res.get('autorizacion')
    cotizacion = res.get('cotizacion')
    completo = nombre+" "+paterno+" "+materno

    conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
    try:
        conn = psycopg2.connect(conn_string)
        cursor = conn.cursor()
        cursor.execute("SELECT id FROM cliente WHERE nombre='" + nombre + "' AND paterno = '"+paterno+"' AND materno='"+materno+"';")
        records = cursor.fetchone()
        #file_name = 'C:\\django\\ProyectoWeb\\ordenes\\ejemplo.xlsx'
        #excel = Dispatch('Excel.Application')
        #workbook = excel.Workbooks.Open(file_name)
        #workBook = excel.ActiveWorkbook
        #activeSheet = excel.ActiveSheet
        #sheets = workBook.Sheets
        #sheet = sheets('Hoja1')
        #sheet.Activate()
        if records <> None:
            query = "UPDATE cliente SET rfc='', direccion='"+direccion+"', telefono='"+telefono+"',cp='"+cp+"' WHERE nombre ='" + nombre + "' AND paterno='"+paterno+"' AND materno ='"+materno+"';"
            cursor.execute(query)
            identifica = records[0]
            query = "INSERT INTO ordenes (id_orden, fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, id_cliente) VALUES (%s, '%s', '%s', '%s', '%s', '%s', '%s', %s);" %(orden, fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, identifica)
            cursor.execute(query)
        else:
            cursor.execute("SELECT COUNT(id) FROM cliente")
            records = cursor.fetchone()
            identifica = records[0]
            query = "INSERT INTO cliente (id, nombre, direccion, telefono, rfc, cp, paterno, materno) VALUES (%s, '%s', '%s', '%s', '','%s','%s','%s');" %(identifica, nombre, direccion, telefono, cp,paterno,materno)
            cursor.execute(query)
            query = "INSERT INTO ordenes (id_orden, fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, id_cliente) VALUES (%s, '%s', '%s', '%s', '%s', '%s', '%s', %s);" % (orden, fecha, descripcion_equipo, descripcion_falla, cambio_piezas, autorizacion, cotizacion, identifica)
            cursor.execute(query)
        conn.commit()
        #sheet.Cells(4, 3).Value = completo
        #sheet.Cells(5, 3).Value = direccion
        #sheet.Cells(6, 3).Value = telefono
        #sheet.Cells(4, 8).Value = orden
        #sheet.Cells(6, 7).Value = fecha
        #sheet.Cells(8, 1).Value = descripcion_equipo
        #sheet.Cells(14, 1).Value = descripcion_falla
        #sheet.Cells(19, 1).Value = cambio_piezas
        #sheet.Cells(18, 5).Value = autorizacion
        #sheet.Cells(19, 7).Value = cotizacion
        #caminosalvacion = 'C:\\django\\ProyectoWeb\\ordenes\\%s.xlsx' %(orden)
        #workBook.SaveAs(caminosalvacion)
        #workBook.Saved = 0
        #workBook.Close(SaveChanges=0)
        #excel.Quit()
        #del excel
    except:
        privilegios = request.session['privilegios']
        if privilegios == admin:
            return render_to_response('ordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'admin':True})
        elif privilegios == basic:
            return render_to_response('ordenes.html', {'usuario':request.session['id'], 'errorCx':True, 'basic':True})
    privilegios = request.session['privilegios']
    if privilegios == admin:
        return render_to_response('ordenes.html', {'exito':True,'usuario':request.session['id'], 'admin':True})
    elif privilegios == basic:
        return render_to_response('ordenes.html', {'exito':True,'usuario':request.session['id'], 'basic':True})

def facturar(request):
	c = {}
	c.update(csrf(request))

	res = request.POST
	folio = res.get('folio')
	fecha = res.get('fecha')
	nombre = res.get('nombre')
	direccion = res.get('direccion')
	telefono = res.get('telefono')
	rfc = res.get('rfc')
	condiciones = res.get('condiciones')
	numerodeproductos = res.get('nprod')
	subtotal = res.get('subtotal')
	iva = res.get('iva')
	total = res.get('total')
	importeamano = res.get('importeamano')
        cp = res.get('cp')
        paterno = res.get('paterno')
        materno = res.get('materno')
        completo = nombre+" "+paterno+" "+materno

	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
            conn = psycopg2.connect(conn_string)
            cursor = conn.cursor()
            cursor.execute("SELECT id FROM cliente WHERE nombre='" + nombre + "' AND paterno = '"+paterno+"' AND materno='"+materno+"';")
            records = cursor.fetchone()
            #file_name = 'C:\\django\\ProyectoWeb\\facturas\\ejemplo.xlsx'
            #excel = Dispatch('Excel.Application')
            #workbook = excel.Workbooks.Open(file_name)
            #workBook = excel.ActiveWorkbook
            #activeSheet = excel.ActiveSheet
            #sheets = workBook.Sheets
            #sheet = sheets('Hoja1')
            #sheet.Activate()
            if records <> None:
                query = "UPDATE cliente SET rfc='"+rfc+"', direccion='"+direccion+"', telefono='"+telefono+"',cp='"+cp+"' WHERE nombre ='" + nombre + "' AND paterno='"+paterno+"' AND materno ='"+materno+"';"
                cursor.execute(query)
                identifica = records[0]
                query = "INSERT INTO factura (folio, id_usuario, id_cliente, fecha, condiciones_pago, importe_letra, subtotal, iva, total) VALUES (%s, '%s', %s, '%s', '%s', '%s', '%s', '%s', '%s');" % (folio, request.session['id'], identifica, fecha, condiciones, importeamano, subtotal, iva, total)
                cursor.execute(query)
            else:
                cursor.execute("SELECT COUNT(id) FROM cliente")
                records = cursor.fetchone()
                identifica = records[0]
                query = "INSERT INTO cliente (id, nombre, direccion, telefono, rfc, cp, paterno, materno) VALUES (%s, '%s', '%s', '%s', '%s','%s','%s','%s');" %(identifica, nombre, direccion, telefono, rfc, cp,paterno,materno)
                cursor.execute(query)
                query = "INSERT INTO factura (folio, id_usuario, id_cliente, fecha, condiciones_pago, importe_letra, subtotal, iva, total) VALUES (%s, '%s', %s, '%s', '%s', '%s', '%s', '%s', '%s');" % (folio, request.session['id'], identifica, fecha, condiciones, importeamano, subtotal, iva, total)
                cursor.execute(query)
            #sheet.Cells(5, 2).Value = completo
            #sheet.Cells(6, 2).Value = direccion
            #sheet.Cells(7, 2).Value = cp
            #sheet.Cells(8, 2).Value = rfc
            #sheet.Cells(7, 5).Value = condiciones
            #sheet.Cells(4, 5).Value = fecha
            #sheet.Cells(35, 2).Value = importeamano
            #sheet.Cells(35, 6).Value = subtotal
            #sheet.Cells(36, 6).Value = iva
            #sheet.Cells(37, 6).Value = total
            i = 0
            j = 11
            while i < int(numerodeproductos):
                importe = res.get('importe%s' % i)
                descripcion = res.get('descripcion%s' % i)
                cantidad = res.get('cantidad%s' % i)
                precioU = res.get('precioU%s' % i)
                query = "INSERT INTO productos (folio, cantidad, descripcion, precio_unitario, importe) VALUES (%s, %s, '%s', '%s', '%s');" % (folio, cantidad, descripcion, precioU, importe)
                cursor.execute(query)
                #sheet.Cells(j, 1).Value = cantidad
                #sheet.Cells(j, 3).Value = descripcion
                #sheet.Cells(j, 4).Value = precioU
                #sheet.Cells(j, 6).Value = importe
                j += 1
                i += 1
                conn.commit()
            #caminosalvacion = 'C:\\django\\ProyectoWeb\\facturas\\%s.xlsx' %(folio)
            #workBook.SaveAs(caminosalvacion)
            #workBook.Saved = 0
            #workBook.Close(SaveChanges=0)
            #excel.Quit()
            #del excel
	except:
            privilegios = request.session['privilegios']
            if privilegios == admin:
                return render_to_response('facturas.html', {'usuario':request.session['id'], 'errorCx':True, 'admin':True})
            elif privilegios == basic:
                return render_to_response('facturas.html', {'usuario':request.session['id'], 'errorCx':True, 'basic':True})
        privilegios = request.session['privilegios']
        if privilegios == admin:
            return render_to_response('facturas.html', {'exito':True,'usuario':request.session['id'], 'admin':True})
        elif privilegios == basic:
            return render_to_response('facturas.html', {'exito':True,'usuario':request.session['id'], 'basic':True})

def verfactura(request):
	c = {}
	c.update(csrf(request))

	res = request.POST

	folio = res.get('folio')
	folio = cgi.escape(folio)

	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
		conn = psycopg2.connect(conn_string)
		cursor = conn.cursor()
		cursor.execute("SELECT folio, id_cliente, fecha, condiciones_pago, importe_letra, subtotal, iva, total FROM factura WHERE folio=%s;" %folio)
		records = cursor.fetchone()
		if records<> None:
			folio = records[0]
			id_cliente = records[1]
			fecha = records[2]
			condiciones_pago = records[3]
			importe_letra = records[4]
			subtotal = records[5]
			iva = records[6]
			total = records[7]
			cursor.execute("SELECT cantidad, descripcion, precio_unitario, importe FROM productos WHERE folio=%s;" %folio)
			cantidad = ""
			descripcion = ""
			precio = ""
			importe = ""
			for row in cursor.fetchall():
				cantidad    += "%s," %row[0]
				descripcion += "%s," %row[1]
				precio      += "%s," %row[2]
				importe     += "%s," %row[3]
			cursor.execute("SELECT nombre, paterno, materno, direccion, telefono, rfc, cp FROM cliente WHERE id=%s;" %id_cliente)
			records = cursor.fetchone()
			nombre =  records[0]
                        paterno = records[1]
                        materno = records[2]
			direccion = records[3]
			telefono = records[4]
			rfc = records[5] 
			cp = records[6]
                        #
                        privilegios = request.session['privilegios']
                        if privilegios == admin:
                            return render_to_response('consultafacturas.html',{'usuario':request.session['id'], 'factura':True,'folio':folio, 'fecha':fecha, 'condiciones':condiciones_pago, 'letra':importe_letra, 'subtotal':subtotal, 'iva':iva, 'total':total, 'cantidades':cantidad, 'descripciones':descripcion, 'precios':precio, 'importes':importe, 'nombre':nombre,'paterno':paterno,'materno':materno, 'direccion':direccion, 'telefono':telefono, 'rfc':rfc, 'cp':cp, 'admin':True})
                        elif privilegios == basic:
                            return render_to_response('consultafacturas.html',{'usuario':request.session['id'], 'factura':True,'folio':folio, 'fecha':fecha, 'condiciones':condiciones_pago, 'letra':importe_letra, 'subtotal':subtotal, 'iva':iva, 'total':total, 'cantidades':cantidad, 'descripciones':descripcion, 'precios':precio, 'importes':importe, 'nombre':nombre,'paterno':paterno,'materno':materno, 'direccion':direccion, 'telefono':telefono, 'rfc':rfc, 'cp':cp, 'basic':True})
		else:
                        privilegios = request.session['privilegios']
                        if privilegios == admin:
                            return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'errorF':True, 'admin':True})
                        elif privilegios == basic:
                            return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'errorF':True, 'basic':True})
	except:
                privilegios = request.session['privilegios']
                if privilegios == admin:
                    return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'errorCx':True, 'admin':True})
                elif privilegios == basic:
                    return render_to_response('consultafacturas.html', {'usuario':request.session['id'], 'errorCx':True, 'basic':True})


def valida(request):
	c = {}
	c.update(csrf(request))

	res = request.POST

	usuario = res.get('usuario')
	usuario = cgi.escape(usuario)
	contrasena = res.get('contrasena')
	contrasena = cgi.escape(contrasena)

	conn_string = "host='"+DBhost+"' dbname='"+DBname+"' user='"+DBuser+"' password='"+DBpassword+"'"
	try:
            conn = psycopg2.connect(conn_string)
            cursor = conn.cursor()
            cursor.execute("SELECT id, password, nombre, privilegios, status FROM usuarios WHERE id='"+usuario+ "';")
            records = cursor.fetchone()
            if records<> None:
                if records[1] == contrasena:
                    request.session['id'] = records[0]
                    request.session['privilegios'] = records[3]
                    request.session['status'] = records[4]
                    if request.session['status'] == activo:
                        if request.session['privilegios'] == admin:
                            return render_to_response('inicio.html',{'usuario':request.session['id'], 'admin':True})
                        elif request.session['privilegios'] == basic:
                            return render_to_response('inicio.html',{'usuario':request.session['id'], 'basic':True})
                    else:
                        return render_to_response('forma.html', {'usuario':request.session['id'], 'errorInactivo':True})
                else:
                    return render_to_response('forma.html', {'errorC':True})
            else:
                return render_to_response('forma.html', {'errorU':True})
        except:
            return render_to_response('forma.html', {'errorCx':True})

def usuarios(request):
    conn_string_usuarios = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
    try:
        conn = psycopg2.connect(conn_string_usuarios)
        cursor = conn.cursor()
        query = "SELECT id, password, nombre, privilegios, status FROM usuarios ORDER BY nombre DESC;"
        cursor.execute(query)
        records = cursor.fetchall()
        if records <> None:
            ids = ""
            passwords = ""
            nombres = ""
            privilegioss = ""
            statuss = ""
            for row in records:
                res0 = row[0]  #ids
                res1 = row[1] #passwords
                res2 = row[2] #nombres
                res3 = row[3] #privilegioss
                res4 = row[4] # statuss
                ids          += "%s," % res0
                passwords    += "%s," % res1
                nombres      += "%s," % res2
                privilegioss += "%s," % res3
                statuss      += "%s," % res4
                #print ids
            return render_to_response('usuarios.html',{'usuario':request.session['id'],'admin':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
    except:
        return render_to_response('forma.html')

def registra_usuario(request):
        c = {}
        c.update(csrf(request))
        res = request.POST
        id = res.get('id')
        id = cgi.escape(id)
        password1 = res.get('password1')
        password1 = cgi.escape(password1)
        password2 = res.get('password2')
        password2 = cgi.escape(password2)
        nombre = res.get('nombre')
        nombre = cgi.escape(nombre)
        privilegios = res.get('privilegios')
        privilegios = cgi.escape(privilegios)
        status = res.get('status')
        status = cgi.escape(status)

        # info usuarios ########################################################
        ids = ""
        passwords = ""
        nombres = ""
        privilegioss = ""
        statuss = ""
        conn_string_usuarios = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
        try:
            conn = psycopg2.connect(conn_string_usuarios)
            cursor = conn.cursor()
            query = "SELECT id, password, nombre, privilegios, status FROM usuarios ORDER BY nombre DESC;"
            cursor.execute(query)
            records = cursor.fetchall()
            if records <> None:
                ids = ""
                passwords = ""
                nombres = ""
                privilegioss = ""
                statuss = ""
                for row in records:
                    res0 = row[0]  #ids
                    res1 = row[1] #passwords
                    res2 = row[2] #nombres
                    res3 = row[3] #privilegioss
                    res4 = row[4] # statuss
                    ids          += "%s," % res0
                    passwords    += "%s," % res1
                    nombres      += "%s," % res2
                    privilegioss += "%s," % res3
                    statuss      += "%s," % res4
        except:
            return render_to_response('forma.html')
        ########################################################################

        if id == "" or password1 == "" or password2 == "" or nombre == "" or privilegios == "" or status == "":
            return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorD':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
        elif password1 <> password2:
            return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorC':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
        else:
            conn_string = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
            try:
                conn = psycopg2.connect(conn_string)
                cursor = conn.cursor()
                cursor.execute("SELECT nombre FROM usuarios WHERE id='%s';" % id)
                records = cursor.fetchall()
                if len(records) == 0:
                    query = "INSERT INTO usuarios VALUES ('%s', '%s', '%s', '%s', '%s');" % (id, password1, nombre, privilegios, status)
                    cursor.execute(query)
                    conn.commit()
                    return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'registroU':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
                else:
                    return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorU':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
            except:
                return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorCx':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})

def modifica_usuario(request):
        c = {}
        c.update(csrf(request))
        res = request.POST
        id = res.get('idEdit')
        id = cgi.escape(id)
        password1 = res.get('password1Edit')
        password1 = cgi.escape(password1)
        password2 = res.get('password2Edit')
        password2 = cgi.escape(password2)
        nombre = res.get('nombreEdit')
        nombre = cgi.escape(nombre)
        privilegios = res.get('privilegiosEdit')
        privilegios = cgi.escape(privilegios)
        status = res.get('statusEdit')
        status = cgi.escape(status)

        # info usuarios ########################################################
        ids = ""
        passwords = ""
        nombres = ""
        privilegioss = ""
        statuss = ""
        conn_string_usuarios = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
        try:
            conn = psycopg2.connect(conn_string_usuarios)
            cursor = conn.cursor()
            query = "SELECT id, password, nombre, privilegios, status FROM usuarios ORDER BY nombre DESC;"
            cursor.execute(query)
            records = cursor.fetchall()
            if records <> None:
                ids = ""
                passwords = ""
                nombres = ""
                privilegioss = ""
                statuss = ""
                for row in records:
                    res0 = row[0]  #ids
                    res1 = row[1] #passwords
                    res2 = row[2] #nombres
                    res3 = row[3] #privilegioss
                    res4 = row[4] # statuss
                    ids          += "%s," % res0
                    passwords    += "%s," % res1
                    nombres      += "%s," % res2
                    privilegioss += "%s," % res3
                    statuss      += "%s," % res4
        except:
            return render_to_response('forma.html')
        ########################################################################

        if id == "" or password1 == "" or password2 == "" or nombre == "" or privilegios == "" or status == "":
            return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorD':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
        elif password1 <> password2:
            return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorC':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
        else:
            conn_string = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
            try:
                conn = psycopg2.connect(conn_string)
                cursor = conn.cursor()
                query = "UPDATE usuarios SET password='"+password1+"', nombre='"+nombre+"', privilegios='"+privilegios+"', status='"+status+"' WHERE id = '"+id+"';"
                cursor.execute(query)
                conn.commit()
                # info usuarios ########################################################
                ids = ""
                passwords = ""
                nombres = ""
                privilegioss = ""
                statuss = ""
                conn_string_usuarios = "host='" + DBhost + "' dbname='" + DBname + "' user='" + DBuser + "' password='" + DBpassword + "'"
                try:
                    conn = psycopg2.connect(conn_string_usuarios)
                    cursor = conn.cursor()
                    query = "SELECT id, password, nombre, privilegios, status FROM usuarios ORDER BY nombre DESC;"
                    cursor.execute(query)
                    records = cursor.fetchall()
                    if records <> None:
                        ids = ""
                        passwords = ""
                        nombres = ""
                        privilegioss = ""
                        statuss = ""
                        for row in records:
                            res0 = row[0]  #ids
                            res1 = row[1] #passwords
                            res2 = row[2] #nombres
                            res3 = row[3] #privilegioss
                            res4 = row[4] # statuss
                            ids          += "%s," % res0
                            passwords    += "%s," % res1
                            nombres      += "%s," % res2
                            privilegioss += "%s," % res3
                            statuss      += "%s," % res4
                except:
                    return render_to_response('forma.html')
                ########################################################################
                return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'update':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})
            except:
                return render_to_response('usuarios.html',{'usuario':request.session['id'], 'admin':True, 'errorCx':True,'ids':ids,'passwords':passwords,'nombres':nombres,'privilegioss':privilegioss,"statuss":statuss})